#============================================================
#	Base State Blackboard
#============================================================
# @datetime: 2022-3-17 22:46:39
#============================================================
class_name BaseStateBlackboard
extends Node


var data : Dictionary = {}
var host


#============================================================
#   Set/Get
#============================================================
func get_data(key):
	return data.get(key)

func set_data(key, value):
	data[key] = value

func get_host():
	return owner

func get_state(state: String) -> Node:
	return get_parent().get_node_or_null(state)

##  获取状态执行代码解析器
func get_parser() -> StateExecuteParser:
	var root = get_tree().root
	if not root.has_meta("StateParser"):
		root.set_meta("StateParser", StateExecuteParser.new())
	return root.get_meta("StateParser") as StateExecuteParser

## 设置子状态的执行代码
## @data  设置的数据。格式为：{"状态节点名"："执行代码"}
func set_states_execute_code(data: Dictionary):
	for state in data:
		var node = get_state(state)
		if node is BaseExecuteState:
			node.process_execute = data[state]


#============================================================
#   自定义
#============================================================
##  解析状态代码
func parse_code(code: String, _host: Node) -> StateExecuteParser.ProxyExecuter:
	return get_parser().parse(code, _host) as StateExecuteParser.ProxyExecuter

